package main

import "fmt"

func main()  {
	fmt.Printf("%T\n", countDown) //类型
	fmt.Println(countDown) //打印地址0x4984c0-->函数是一种数据类型：引用类型
	res1:=countDown()//函数的调用-->相当于：res1=fun
	fmt.Println(res1) //0x498650
	fmt.Println(res1()) //9
	fmt.Println(res1())//8
	res2:=countDown()
	fmt.Println(res2())//9
}
/*
函数的定义：func关键字声明函数：
	函数名，参数列表，返回值列表---->开辟内存
函数的调用：函数名()
	将函数中的代码全部执行一次

GC：
 */
//func (int) func()int
func countDown() func() int  { //定义函数：只做函数的声明
	num := 10 //定义一个变量
	fun:=func()int{//定义一个匿名函数-->赋值给fun变量。
		num-- // num减1，赋值给num
		return num
	}
	fmt.Println("匿名函数的地址：",fun) //0x498650
	return fun //0x498650
}
